package com.ruoyi.media.domain;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 个人计划对象 tb_plans
 * 
 * @author crocodilePole
 * @date 2025-03-11
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Plans extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 序号 */
    private Long planId;

    /** 用户ID，关联用户表中的user_id（注意：此示例中未创建外键约束） */
    @Excel(name = "用户ID，关联用户表中的user_id", readConverterExp = "注=意：此示例中未创建外键约束")
    private Long userId;

    /** 计划标题 */
    @Excel(name = "计划标题")
    private String title;

    /** 计划的详细描述 */
    @Excel(name = "计划的详细描述")
    private String description;

    /** 计划开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "计划开始日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startDate;

    /** 计划结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "计划结束日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endDate;

    /** 计划状态，默认值为未开始,值：未开始, 进行中, 已完成, 已过期)  */
    @Excel(name = "计划状态，默认值为未开始,值：未开始, 进行中, 已完成, 已过期) ")
    private Long status;

    /** 提前提醒时间，单位为分钟，默认不提醒（0分钟） */
    @Excel(name = "提前提醒时间，单位为分钟，默认不提醒", readConverterExp = "0=分钟")
    private Long reminderTime;

    /** 记录创建的时间戳，默认值为当前时间戳 */
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
    @Excel(name = "记录创建的时间戳，默认值为当前时间戳", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createTime;

    /** 计划进度，表示完成的百分比（0-100），默认值为0% */
    @Excel(name = "计划进度，表示完成的百分比", readConverterExp = "0-100")
    private Long progress;

    @Excel(name = "计划类别，表示计划的类型（1:短计划 2：长计划）")
    private char category;

    /** 是否即将过期，默认值为否（0：否 1：是） */
    private Integer isExpiry;


}
